/*!
 * \file frservice_comm.h
 *
 * \brief 主机服务共通管理
 *
 * All Rights Reserved Copyright (C) 2014 broada,Co.,Ltd.\n
 * 关联连接共通管理
 *
 * \version 2.0
 * \author yaohl
 * \date 2015/11/27
 *
 */

#ifndef __FRSERVICE_COMM_H_
#define __FRSERVICE_COMM_H_

/*! @brief 用于记录某主机对外提供哪些服务 */
typedef struct __st_host_service {
    int     l7_proto;       /*!< 全局使用的l7代号，唯一 */
    u_int   ip;             /*!< 服务器ip */
    u_short port;           /*!< 服务器port */

    void *p_data;           /*!< 协议附加信息 */
    u_int ui_data_size;     /*!< 协议附加信息长度 */
} Host_service;

/*!
 * 增加主机服务信息
 *
 * \param p_frame_ref  (框架引用信息)
 * \param i_l7_proto   (l7代号)
 * \param ui_host_ip   (服务器ip)
 * \param us_host_port (服务器port)
 * \param p_data       (附加信息,没有设置NULL)
 * \param ui_data_size (附加信息长度,没有设置0)
 *
 * \return void
 *
 */
void frservice_add(void* p_frame_ref ,int i_l7_proto, u_int ui_host_ip, u_short us_host_port
                 , void *p_data, unsigned int ui_data_size);

/*!
 * 删除主机服务信息
 *
 * \param p_frame_ref  (框架引用信息)
 * \param i_l7_proto   (l7代号)
 * \param ui_host_ip   (服务器ip)
 * \param us_host_port (服务器port)
 * \param p_data       (附加信息,没有设置NULL)
 * \param ui_data_size (附加信息长度,没有设置0)
 * \param p_is_ouput   (出力信息:附加信息出力返回FR_SUCC,没有FR_FAIL)
 *
 * \return FR_SUCC:成功\n
 *         FR_FAIL:失败
 *
 * \note p_data内存空间需要外部申请
 */
int frservice_get(void* p_frame_ref ,int i_l7_proto, u_int ui_host_ip, u_short us_host_port
                , void *p_data, unsigned int ui_data_size, int *p_is_ouput);


#endif
